
        <html>
			<head>
			     <title>浅谈互联网公司业务安全 - BMa</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/8190">http://drops.wooyun.org/tips/8190</a></h1>
				
      <p>
        <h1>0x00 我理解的业务安全</h1>

<hr />

<p>业务安全，按照百度百科的解释：业务安全是指保护业务系统免受安全威胁的措施或手段。广义的业务安全应包括业务运行的软硬件平台（操作系统、数据库等）、业务系统自身（软件或设备）、业务所提供的服务的安全；狭义的业务安全指业务系统自有的软件与服务的安全。</p>

<p>我的理解：某个平台上的业务是指该平台用户在使用过程中涉及到的一系列流程，而业务安全就是保证这些流程按照预定的规则运行。</p>

<!--more-->

<h1>0x01 通用业务及威胁</h1>

<hr />

<p>由于互联网企业的特性，其主要业务直接体现在其平台上。其中有不少通用的业务流程：</p>

<h3>1.账号体系</h3>

<p><strong>A．注册</strong></p>

<p><strong>B．登录</strong></p>

<p><strong>C．密码找回</strong></p>

<p><strong>D．用户信息存储</strong></p>

<h3>2.其他具体业务</h3>

<p><strong>A．购买/支付</strong></p>

<p><strong>B．优惠活动</strong></p>

<p><strong>C．抢购活动</strong></p>

<p><strong>D．…</strong></p>

<p>来看看分别有哪些威胁：</p>

<p><strong>1．对于账号体系：</strong></p>

<blockquote>
  <p>A．恶意用户批量注册账号</p>
  
  <p>B．撞库（账号安全）</p>
  
  <p>C．批量重置用户账号，威胁其他用户账号</p>
</blockquote>

<p><strong>2．其他具体业务</strong></p>

<blockquote>
  <p>A．恶意订单（下单未支付）</p>
  
  <p>B．低价购买</p>
  
  <p>C．批量刷优惠券&amp;其他奖励</p>
  
  <p>D．抢购</p>
  
  <p>E．窃取其他用户优惠券</p>
  
  <p>F．购买限制（购买数量限制/未开放购买商品限制/特殊用户商品限制）</p>
  
  <p>G．价格爬虫</p>
  
  <p>H．作弊</p>
  
  <p>I．黄牛限制</p>
  
  <p>J．垃圾信息（用户欺诈）</p>
  
  <p>K．交易风控（交易限额/交易信息/用户支付信息）</p>
  
  <p>L．信息泄露（未开放业务上线）</p>
  
  <p>M．黑色产业</p>
  
  <p>N．虚假交易（刷信用/套现）</p>
  
  <p>O．…</p>
</blockquote>

<p>从上面的一些威胁可以看出，账号体系安全是其他业务的基础，与许多业务直接相关。</p>

<h1>0x02 部分威胁解决方案</h1>

<hr />

<p>可以从两个方面寻找不同的解决方案：</p>

<h3>1．从技术上看</h3>

<p><strong>A．账号体系</strong></p>

<p>a．注册限制：</p>

<p>通过图片验证码、短信验证码、邮件验证码等增加批量注册的成本</p>

<p>收集注册用户数据，分析注册后用户的行为。通过对比正常用户与马甲用户的行为、指纹等，标识马甲用户。或冻结没有行为的账户</p>

<p>b．登录：</p>

<p>将分散的登录入口统一，防止由于遗漏而造成撞库</p>

<p>增加图片验证码等人机识别方式，防止登录撞库</p>

<p>限制账号登录频率以及次数</p>

<p>通过数据分析用户登录趋势图，区分不用时间用户尝试登陆曲线、用户登录失败曲线、用户登录成功曲线，可以在发生撞库行为时做到及时响应</p>

<p>提示高危账号进行密码修改（登录后推送）</p>

<p>建立用户价值体系，通过用户记录、信用、行为等不同维度数据建立用户价值体系</p>

<p>c．密码找回</p>

<p>优化密码找回逻辑，防止逻辑错误</p>

<p>对返回用户信息进行脱敏处理</p>

<p>通过数据分析用户重置密码趋势图，可以在发生批量用户密码重置时做到及时响应</p>

<p>d．用户信息存储</p>

<p>例子：  <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2015-095089">WooYun: 高德某站严重用户信息泄漏（包含明文密码）</a> </p>

<p>对用户信息进行加盐哈希等处理</p>

<p><strong>B．其他具体业务</strong></p>

<p>a．恶意订单</p>

<p>通过用户成功下单、支付等建立维度，冻结不符合规范的账号，或在某段时间内限制其下单</p>

<p>b．低价购买&amp;购买限制</p>

<p>验证购买/支付流程，后台增加校验机制</p>

<p>c．批量刷优惠券&amp;其他奖励&amp;其他用户优惠券</p>

<p>例子：  <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2015-0125060">WooYun: 饿了么逻辑漏洞之免费吃喝不是梦</a> </p>

<p>绑定优惠券与账号，限制单个号码/账号获取的优惠券数量</p>

<p>对于批量注册马甲账号的行为可以通过账号体系进行限制</p>

<p>调整奖励规则（现金变成券），增加使用成本（绑定身份证、银行卡）</p>

<p>d．抢购&amp;黄牛</p>

<p>纵深防御，从账号体系开始</p>

<p>购买过程中，增加人机识别，加大恶意抢购成本</p>

<p>增加黄牛检测机制，通过收货地址、账号、订单数量、手机号码、收货人等不同维度检测黄牛账号</p>

<p>过滤从其他维度获取的黄牛账号</p>

<p>白名单用户直接通过黄牛验证</p>

<p>将付款后异常退款加入加入黑名单，标识账号、收货地址为黄牛账号</p>

<p>e．价格爬虫&amp;信息泄露</p>

<p>规范业务上线流程，防止未开放业务上线</p>

<p>增加反爬虫机制，对访问来源进行限制</p>

<p>f．垃圾信息（用户欺诈）</p>

<p>例子： <a href="http://tech.qq.com/a/20150820/051352.htm">http://tech.qq.com/a/20150820/051352.htm</a></p>

<p>处理这类风险较复杂，可以从用户行为特征、用户账号信任评级加以区分</p>

<p>同时开启用户举报功能</p>

<p>g．交易风控</p>

<p>例子：</p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-054302">WooYun: 携程安全支付日志可遍历下载 导致大量用户银行卡信息泄露(包含持卡人姓名身份证、银行卡号、卡CVV码、6位卡Bin)</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2015-0117420">WooYun: 腾邦国际某重要系统SQL注入24个库DBA权限(涉及百万酒店订单信息+八万信用卡信息+信用卡明文CVV码)</a> </p>

<p>合规性检查，符合《银联卡收单机构账户信息安全管理标准》</p>

<p>h．黑色产业</p>

<p>分析具体业务，找出攻击者获利点</p>

<p>建立黑名单共享联盟，将恶意的IP、用户ID、邮箱地址、手机号码等列入黑名单</p>

<p>在上面的部分中，可以对用户行为进行分析、建模，例如：</p>

<p>A．正常用户的流程/记录为：注册—>登录—>查询—>下单—>支付—>查看订单—>收货</p>

<p>B．异常用户的流程/记录为：注册—>登录—>领取优惠券</p>

<p>还可以对日志进行实时分析：</p>

<p>A．url深度(单斜杆出现次数)</p>

<p>B．访问离散度(页面数/访问次数)</p>

<p>C．200响应比例</p>

<p>D．用户访问入口</p>

<h3>2．从流程上看</h3>

<p><strong>A．项目立项风控、安全测试介入</strong></p>

<p>业务评审、评估业务风险点</p>

<p>业务上线前经过安全测试，包括传统安全、业务接口、业务逻辑、黑白盒测试</p>

<p><strong>B．业务数据实时监控</strong></p>

<p><strong>C．异常事件介入分析</strong></p>

<p>通过数据实时分析，确定当前数据是否符合预期</p>

<p><strong>D．业务规则动态调整</strong></p>

<p>当出现非预期的状况时，适当调整、优化规则</p>

<p><strong>E．止损控制</strong></p>

<p>当业务从需求上无法控制时，就要降低损失比例，减少业务损失</p>

<p><strong>F．业务隔离</strong></p>

<p>隔离重要业务与风险业务，使其单独运行</p>

<h1>0x03 业务安全挖掘思路</h1>

<hr />

<p>要挖掘业务漏洞，需要先了解业务逻辑（业务类型/流程），评估风险点。在业务流程中列出正常访问与异常访问区别，分析攻击者的目的及获利方式，对症下药，同时还要排除传统安全威胁。</p>

<p>推荐：</p>

<p><a href="http://www.taobaotest.com/blogs/2248">http://www.taobaotest.com/blogs/2248</a>
<a href="http://www.taobaotest.com/blogs/2329">http://www.taobaotest.com/blogs/2329</a></p>

<h3>附（引用）：</h3>

<p>企业安全建设与账号体系.pdf</p>

<p>安全平台建设与业务安全.pdf</p>

<p>http://www.wooyun.org</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          